package org.springblade.modules.admin.service;

import cn.hutool.json.JSONObject;
import org.springblade.core.mp.base.BaseService;
import org.springblade.modules.admin.entity.MaintainSignSeting;
import org.springblade.modules.admin.entity.UserSignDetail;
import org.springblade.modules.admin.vo.MaintainSignSetingVO;
import org.springblade.modules.admin.vo.SignSetingGroupUserVO;
import org.springblade.modules.admin.vo.SignUserVO;

import java.util.List;
import java.util.Map;

public interface MaintainSignSetingService extends BaseService<MaintainSignSeting> {

	/**
	 * 新增/编辑考勤配置
	 * @param signSeting
	 * @return
	 */
    Boolean saveOrUpdateSignSeting(MaintainSignSetingVO signSeting);

	/**
	 * 详情列表
	 * @return
	 */
	List<MaintainSignSetingVO> detailList(Integer year);

	/**
	 * 获取已参与考勤的用户
	 * @param signSetingId
	 * @return
	 */
	List<Long> getOtherSignSetingUsers(Long signSetingId);

	/**
	 * 获取年度所有节假日，默认本年
	 * @param year
	 * @return
	 */
	JSONObject getHolidays(Integer year);


	/**
	 * 根据日期获取考勤用户信息
	 * @param date 格式20220901
	 * @return
	 */
	List<UserSignDetail> getUserSignDetailByDate(Integer date);

	/**
	 * 获取考勤组的用户信息
	 * @return
	 */
	Map<Long, List<SignSetingGroupUserVO>> getSignSetingUserInfos();

	/**
	 * 获取年度所有节假日，默认本年
	 * @param year
	 * @return
	 */
	JSONObject getHolidaysV2(Integer year);
}
